package day06.sparksql

import org.apache.spark.sql.{DataFrame, Dataset, Row, SparkSession}

object SparkSQLDemo_3_hive {
  def main(args: Array[String]): Unit = {
    val spark: SparkSession = SparkSession
      .builder()
      .appName("SparkSQLDemo_3_hive")
      .master("local[2]")
      .config("spark.sql.warehouse.dir","E://data/spark-warehouse") //配置warehouse路径，将元数据存到哪里
      .enableHiveSupport()  //启动hive支持
      .getOrCreate()

    import spark.implicits._
//    import org.apache.spark.sql.functions._

    //创建hive表。好像我这里总有问题，"E://data/spark-warehouse目录下不会生成元数据信息。。。！！！！！
//    spark.sql("create table if not exists src(key int, value string)")
//    //这里有个坑，路径E://就报错找不到目录，路径E:/就可以正常运行
//    spark.sql("load data local inpath 'E:/data/kv1.txt' into table src")
//    spark.sql("select * from src").show()
//    spark.sql("select count(*) from src").show()

    //将获取的DataFrame转换为DataSet
//    val df: DataFrame = spark.sql("select key,value from src where key<=10 order by key")
//    val ds: Dataset[String] = df.map {
        //用case Row，返回字符串。注意只有map没参数，用case的话要用大括号，不能用小括号？？？
//      case Row(key: Int, value: String) => s"key: $key, value: $value" ///这个挺不好引用的，alt+enter，然后选spark的那个引用的
//    }
//    ds.show()


    //将1到100的数据直接生成DataSet
    val value: Range.Inclusive = 1.to(100)
    val valueDS: Dataset[Int] = spark.createDataset(value)
    valueDS.show()

    spark.stop()
  }
}

//case class Value(value: Int)